/**
 * @author Sebastian
 * @version 2.0
 * @date 2024/7/22 21:05
 */
// 旋转链表
    // https://leetcode.cn/problems/rotate-list/
    // 先遍历获得全部长度，链表首位相连
    // 断开位置
public class Solution61 {
    public ListNode rotateRight(ListNode head, int k) {
        if (head == null) return null;
        ListNode cur = head;
        int len = 1;
        while (cur.next != null) {
            len++;
            cur = cur.next;
        }
        // 首位相连
        cur.next = head;
        // 处理k大于长度的情况
        k %= len;
        // 在倒数第k + 1处断开
        for (int i = 0; i < len - k; i++) {
            cur = cur.next;
        }
        ListNode newHead = cur.next;
        // 断开环形链表
        cur.next = null;
        return newHead;
    }
}
